ci(v3): publish artifacts before immutable releases - #5888
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
💤 Files with no reviewable changes (1)
WalkthroughNightly v3 releases defer GitHub release creation until desktop artifacts are published. The workflow detects missing releases, dispatches and tracks Changesv3 release publication
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related issues
Possibly related PRs
Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant NightlyReleaseV3
participant ReleaseTask
participant ReleaseV3Workflow
participant GitHubRelease
NightlyReleaseV3->>ReleaseTask: run with --defer-github-release
ReleaseTask->>NightlyReleaseV3: return tag and release notes
NightlyReleaseV3->>ReleaseV3Workflow: dispatch tag, notes, and orchestrator run
ReleaseV3Workflow->>GitHubRelease: publish release after artifacts
NightlyReleaseV3->>ReleaseV3Workflow: poll dispatched run
ReleaseV3Workflow->>NightlyReleaseV3: return publication status
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/nightly-release-v3.yml:
- Around line 71-83: Update publication_check to resolve the latest active v3
tag reachable from HEAD rather than relying only on steps.check_tag.outputs.tag,
then check that tag with gh release view and preserve needs_recovery output
behavior. Ensure the workflow still handles the existing tag gating and add a
regression case covering a bookkeeping-only commit after an unpublished tag.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 1e5706d2-a44b-4f9b-b7ad-e7a01ece2381
📒 Files selected for processing (5)
.github/workflows/nightly-release-v3.yml.github/workflows/release-v3.ymlv3/UNRELEASED_CHANGELOG.mdv3/tasks/release/release.gov3/tasks/release/release_test.go
|
Updated the branch in Publication recovery now:
Regression coverage creates a tagged commit, an unreachable higher active-series tag, and a following bookkeeping commit, then proves recovery still selects the reachable tag. Validation:
The installed CodeRabbit CLI no longer supports |
…e-release # Conflicts: # v3/UNRELEASED_CHANGELOG.md
|
Morning release-cycle refresh:
The PR is current and mergeable, with required maintainer review still outstanding. I also changed the description from |
|
Morning release-cycle handoff: refreshed this branch onto current Validation on the refreshed head: The in-window Nightly run 31117548329 failed before any workflow step because GitHub returned Service Unavailable while resolving action downloads after retries; that is external runner infrastructure and does not invalidate this workflow fix. |
# Conflicts: # v3/UNRELEASED_CHANGELOG.md
|
Morning release-cycle handoff: refreshed the branch with current Beta.5 Release v3 run 31192135957 confirms the blocker: all six desktop binaries were built, SHA256SUMS and provenance attestation 39449314 were created, then the first release-asset upload failed HTTP 422 because beta.5 had already been published as an immutable release. This PR prevents that ordering by deferring release creation until the artifact workflow creates the release with its assets; recovery intentionally leaves an already-existing immutable release untouched. Validation at the pushed head:
The PR is mergeable. All three required checks are green; CodeQL, CodeRabbit, FOSSA, Snyk, Semgrep, docs, runtime verification, JS, and master-platform Go checks also pass. The three hosted v3 Go jobs are still running. Cloudflare Pages failed as an external status but |
Summary
Part of #5876
Root cause
The nightly release task published the GitHub release before dispatching Release v3. Repository release immutability then rejected Release v3's artifact upload with HTTP 422, even though all six binaries, checksums, and provenance had built successfully.
Impact
Future nightly releases are created atomically by Release v3 with their desktop binaries, SHA256SUMS, and provenance attached. A failed child publication now fails the orchestrator visibly and is retried when the tagged commit still has no release. Dry runs remain non-mutating, and direct/manual Release v3 dispatches retain their existing generated-notes fallback.
Validation
go test ./tasks/releaseactionlinton both workflows (only the pre-existingactions/setup-go@v4age diagnostic)git diff --checkgo test ./...attempted; blocked by missing GTK4/WebKitGTK/glib/libsoup development packages and existing GUI/path-sensitive tests in this environmentNo workflow, tag, or release was dispatched or published by this PR.
Summary by CodeRabbit